﻿
namespace SistemaLogistica.Business.Logic
{
    using System;
    using System.Collections.Generic;
    using SistemaLogistica.Business.Entities;
    using SistemaLogistica.Business.Entities.Types;
    using SistemaLogistica.DataAccess;

    public class OrdenPedidoManager
    {
        private OrdenPedidoManager() { }

        private static readonly OrdenPedidoManager instancia = new OrdenPedidoManager();

        public static OrdenPedidoManager Instancia
        {
            get { return instancia; } 
        }

        public List<OrdenPedido> Listar()
        {
            try
            {
                return OrdenPedidoData.Instancia.Listar();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<OrdenPedido> ListarPorTipo(PedidoType tipo)
        {
            try
            {
                return OrdenPedidoData.Instancia.ListarPorTipo(tipo);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<OrdenPedido> ListarPorArea(int idArea, bool estado)
        {
            try
            {
                return OrdenPedidoData.Instancia.ListarPorArea(idArea,estado);
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        public List<OrdenPedido> Buscar(DateTime fecha)
        {
            try
            {
                return OrdenPedidoData.Instancia.Buscar(fecha);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public OrdenPedido ObtenerPorID(int idOrdenPedido)
        {
            try
            {
                return OrdenPedidoData.Instancia.ObtenerPorID(idOrdenPedido);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Registrar(OrdenPedido orden)
        {
            try
            {
                OrdenPedidoData.Instancia.Registrar(orden);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Modificar(OrdenPedido orden)
        {
            try
            {
                OrdenPedidoData.Instancia.Modificar(orden);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Eliminar(int idOrdenPedido)
        {
            try
            {
                OrdenPedidoData.Instancia.Eliminar(idOrdenPedido);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
